1. Field of the Invention
Embodiments of the disclosure relate in general to the field of computers and similar technologies, and in particular to software utilized in this field. Still more particularly, the present invention relates to an improved method and system for managing the user interface (UI) state in an Asynchronous Javascript And eXtensible Markup Language (AJAX) application.
2. Description of the Related Art
Composite applications consist of functionality drawn from multiple sources, often delivered within a service oriented architecture (SOA). The components that make up a composite application may be individual Web services, selected functions from within other applications, or entire systems whose outputs have been packaged as Web services. These components, typically contributed from multiple, independent sources, are executable within the same runtime context. However, conventional methods of implementing composite Web applications (e.g., IBM's WebSphere Portal, Eclipse, and Microsoft's .NET) do not address the relatively new domain of rich Web applications, such as those developed with Asynchronous Javascript And eXtensible Markup Language (AJAX). Composite applications created with AJAX are incrementally updated by dynamically exchanging small amounts of data between their Web pages and their contributing Web servers. As a result, Web pages do not have to be reloaded in their entirety when they are updated and composite applications feel more responsive and interactive.
The Java programming language is an object-oriented programming language, which utilizes high-level syntax derived from C and C++, but includes a simpler object model with fewer low-level facilities. (Java is a trademark of Sun Microsystems). Java programs are typically compiled into bytecode, which can either be interpreted at run time or compiled into native machine code for execution. Java programs utilize configurable security features to enable selective restriction of network and/or file access operations. AJAX utilizes a client side script language, such as Javascript, along with eXtensible Markup Language (XML), to enable the creation of the initial conditions for the evolution of dynamic, intuitive, complex, and data-centric user interfaces in Web pages. Accordingly, AJAX increases the speed, interactivity, and ease-of-use of Web pages.
However, this same flexibility can also create issues in composite Web applications, as the AJAX framework that displays contributed user interface (UI) functionality does not know which code it may have to invoke until run-time. Since AJAX applications run within the context of a single HTML page, common Web browser functions such as the back, forward, history, and bookmarking buttons may fail. A known approach to this issue is to denote page state by adding information after the URL hash (‘#’). If the value after the hash changes, then the Web page is not refreshed. Currently, no solution exists to automatically bind an AJAX uniform resource locator (URL) to application code in an extensible composite application. As a result, both intra- and inter-component dependencies are tightly coupled, which results in additional effort to maintain and validate related application code.